package com.opal.jx.mapper.mysql;

import com.opal.jx.entity.table.JxAssessBzcj;
import com.opal.jx.entity.table.JxAssessBzcjZg;
import com.opal.jx.entity.table.JxDept;
import com.opal.jx.entity.table.JxEmp;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 绩效考核自定义连表查询全部写在这里
 */
public interface JxAssessCommonMapper {

    /**
     * 组长页面刷新数据---获取组长的姓名、工号和所属主管姓名和工号
     * @param postId
     * @param pkDept
     * @return
     */
     List<JxAssessBzcj> selectZuZhangInfo(@Param("postId") String postId, @Param("pkDept")String pkDept);

     /**
      * 根据条件：部门、岗位名称，连表岗位名称查询数据（根据员工表的组别作为条件来获取组长名称）查询出来的数据带组长的字段(zu_zhang_name)
      * @param pkDept      表1需要的条件：1002O110000000000MMQ
      * @param postName    连表2中需要的条件：'辅助组长'
      * @param postNames   表1需要的条件:'辅助人员', '搬运工', '辅助组长', '清洁工'
      * @return
      */
     List<Map<String,String>>  selectJxEmpInfo(@Param("pkDept")String pkDept,@Param("post")String postName, @Param("postNames") List<String> postNames);

     /**
      * 根据部门和岗位名称获取员工基本信息
      * SELECT * from (SELECT id,emp_code,emp_name,emp_kezhang,post_id FROM  jx_emp) a
      * inner join (select id jid,`name` from jx_post where pk_dept='1002O110000000000MMQ' and name in ('产线主管','辅助主管','总计划主管') ) b
      * on a.post_id =b.jid
      * @param pkDept
      * @param postNames
      * @return
      */
     List<JxEmp>  selectDeptAllPostNamesEmpInfo(@Param("pkDept")String pkDept,@Param("postNames") List<String> postNames);

     /**
      * 通过模糊查询岗位名称获取员工数据：如   "%组长%"
      * @param postName
      * @return
      */
     List<JxEmp> selectEmpByLikePostName(@Param("postName")String postName,@Param("pkDept")String pkDept);

     /**
      * 据主管工号找辅助杂工(搬运工、清洁工)，写个通用的:1、获取当前部门的所有辅助主管，2、然后去除辅助主管、辅助组长、辅助人员，剩下来的就是杂工
      * @param postId
      * @param pkDept
      * @param ps
      * @return
      */
    List<JxEmp> selectFuZhuZaGongInfo(@Param("postId")Long postId, @Param("pkDept")String pkDept,@Param("ps") List<String> ps);

    /**
     * 查询所有的部门
     * @return
     */
    List<JxDept> getAllJxDept();
    /**
     * 查询所有的部门
     * @return
     */
    List<JxDept> getJxDeptByPkOrg(String pkOrg);

    /**
     * 查询当年当月主管的绩效考核数据
     * @param year
     * @param month
     * @return
     */
    List<JxAssessBzcjZg> getBzcjZhuGuanJxAssess(Integer year, Integer month);

    /**
     * 根据：年、月来查询非总计划主管的绩效数据
     * @param year
     * @param month
     * @return
     */
    List<JxAssessBzcjZg> getCxAndFzAssessDataByYearAndMonth(Integer year, Integer month);

    /**
     * 查询员工表
     * @param pkDept  部门编码
     * @return 员工资料以及所属组长、主管的名字
     */
    List<JxEmp> selectEmpReturnLead(String pkDept);
}
